Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Modula-3</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Modula-3"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Modula-3 rootpage-Modula-3 skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Modula-3</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Modula-3</b> ist eine <a href="Imperative_Programmierung" title="Imperative Programmierung">imperative</a>, <a href="Objektorientierte_Programmierung#Objektorientierte_Programmiersprachen" title="Objektorientierte Programmierung">objektorientierte Programmiersprache</a>. Sie versteht sich als Nachfolger von <a href="Pascal_(Programmiersprache)" title="Pascal (Programmiersprache)">Pascal</a>, <a href="Modula-2" title="Modula-2">Modula-2</a>, <a href="Modula-2%2B" title="Modula-2+">Modula-2+</a> und Cedar und wurde von <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> und <a href="Olivetti" title="Olivetti">Olivetti</a> entwickelt. Sie wurde in der Tradition der Sprachen von <a href="Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a> unter den Gesichtspunkten der Einfachheit und Strenge entwickelt, an der Entwicklung war Wirth allerdings nur als Berater beteiligt. Die Einfachheit bezieht sich hierbei auf den Sprachumfang (Die Sprachdefinition von Modula-3 umfasst 60 Seiten) und nicht auf die Länge der Programme oder auf eine Orientierung an persönlichen Programmiergewohnheiten.
</p>
<div class="mw-heading mw-heading2"><h2 id="Eigenschaften">Eigenschaften</h2></div>
<p>Modula-3 besitzt folgende Eigenschaften:
</p>
<ul><li>eine saubere und robuste <a href="Syntax" title="Syntax">Syntax</a></li>
<li>strenge und statische <a href="Datentyp" title="Datentyp">Typen</a>
<ul><li><a href="Datentyp#Ordinale_Datentypen" title="Datentyp">Ordinale Typen</a>: <a href="Ganze_Zahl" title="Ganze Zahl">Ganze Zahlen</a>, <a href="Aufz%C3%A4hlungstyp" title="Aufzählungstyp">Aufzählungen</a>, <a href="Zeichen" title="Zeichen">Zeichen</a>, <a href="Wahrheitswert" title="Wahrheitswert">Wahrheitswerte</a></li>
<li>Unterbereiche ordinaler Typen</li>
<li>Mengen über ordinalen Typen</li>
<li><a href="Array_(Datentyp)" title="Array (Datentyp)">Felder</a> mit ordinalen Typen als Indizes</li>
<li><a href="Gleitkommazahl" title="Gleitkommazahl">Gleitkommazahlen</a></li>
<li><a href="Zeichenkette" title="Zeichenkette">Texte</a></li>
<li><a href="Verbund_(Datentyp)" title="Verbund (Datentyp)">Datenverbünde</a> und <a href="Objekt_(Programmierung)" title="Objekt (Programmierung)">Objekte</a></li>
<li><a href="Unterprogramm" title="Unterprogramm">Unterprogramme</a> und <a href="Funktion_(Programmierung)" title="Funktion (Programmierung)">Funktionen</a></li></ul></li>
<li><a href="Modulare_Programmierung" title="Modulare Programmierung">Module</a></li>
<li><a href="Generische_Programmierung" title="Generische Programmierung">Generische Module</a> <i>(<a href="Template_(C%2B%2B)" title="Template (C++)">templates</a>)</i></li>
<li>teilweise Aufdeckung von Untertypbeziehungen <i>(partial revelation)</i></li>
<li><a href="Garbage_Collection" title="Garbage Collection">automatische Speicherbereinigung</a> <i>(garbage collection)</i></li>
<li><a href="Ausnahmebehandlung" title="Ausnahmebehandlung">Ausnahmebehandlung</a> <i>(exceptions)</i></li>
<li><a href="Multithreading" title="Multithreading">nebenläufige Programmierung</a> <i>(<a href="Thread_(Informatik)" title="Thread (Informatik)">threads</a>)</i></li>
<li>Trennung von sicheren und unsicheren Programmteilen</li></ul>
<p>Die oben genannten Konzepte wurden regelrecht <a href="Orthogonaler_Befehlssatz" title="Orthogonaler Befehlssatz">minimalistisch</a> umgesetzt.
Dies erleichtert die Einarbeitung für jemanden, der mit diesen Konzepten vertraut ist.
</p>
<ul><li>Objektorientierung besteht im Wesentlichen aus dem Typ OBJECT.</li></ul>
<div class="mw-highlight mw-highlight-lang-modula2 mw-content-ltr" dir="ltr"><pre><span></span> <span class="kr">TYPE</span>
<span class="n">T</span> <span class="o">=</span> <span class="n">OBJECT</span>
<span class="n">a</span><span class="p">:</span> <span class="nb">INTEGER</span><span class="p">;</span>
<span class="n">METHODS</span>
<span class="n">m</span> <span class="p">(</span><span class="n">arg</span><span class="p">:</span> <span class="nb">CHAR</span><span class="p">;)</span> <span class="o">:=</span> <span class="n">P</span><span class="p">;</span>
<span class="kr">END</span><span class="p">;</span>
</pre></div>
<dl><dd>Dies definiert den Typ <span style="font-family:monospace;">T</span> für Objekte, welche die Objektvariable <span style="font-family:monospace;">a</span> und die Methode <span style="font-family:monospace;">m</span> enthalten. Die Methode <span style="font-family:monospace;">m</span> wird implementiert, indem man ihr eine Prozedur <span style="font-family:monospace;">P</span> zuweist. Diese muss die Signatur</dd></dl>
<pre> PROCEDURE P (self: T; arg: CHAR; );
</pre>
<dl><dd>besitzen.</dd>
<dd>Es gibt keine ausgezeichneten Methoden wie Konstruktoren und Destruktoren. Allerdings lassen sich Objektvariablen per Typdefinition in einen definierten Anfangszustand versetzen.</dd></dl>
<ul><li>Kapselung wird durch die von <a href="Modula-2" title="Modula-2">Modula-2</a> bekannte Trennung in Schnittstelle und Implementation erreicht. Durch die teilweise Aufdeckung von Untertypbeziehungen (REVEAL) können darüber hinaus beliebig feine Abstufungen von Zugriffsmöglichkeiten definiert werden. Dies ist in gewisser Weise eine Verallgemeinerung der <span style="font-family:monospace;">public</span>-<span style="font-family:monospace;">protected</span>-<span style="font-family:monospace;">private</span>-Hierarchie und der <span style="font-family:monospace;">friends</span>-Vereinbarungen von <a href="C%2B%2B" title="C++">C++</a>.</li></ul>
<ul><li>Mit Typen parametrisierte Datenstrukturen lassen sich mit <a href="Template_(C%2B%2B)" title="Template (C++)">generischen Modulen</a> realisieren. Generische Module unterscheiden sich von normalen Modulen durch Modul-Parameter. In gewisser Weise kann man damit ausgewählte <span style="font-family:monospace;">IMPORT</span>-Anweisungen variabel halten. Nachteil dieser einfachen Realisierung ist, dass generische Module nicht direkt übersetzt werden können, sondern nur ihre Ausprägungen.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Entwicklung">Entwicklung</h2></div>
<p>Die <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> wurde 1998 an <a href="Compaq" title="Compaq">Compaq</a> verkauft; diese wiederum ging 2002 in <a href="HP_Inc." title="HP Inc.">Hewlett-Packard</a> auf. Pflege und Weiterentwicklung der Quellen der wichtigsten Modula-3-Compiler wurde von <i>Elego Software Solutions</i> übernommen. Seit der Übernahme wird vor allem <i>Critical Mass Modula-3</i> stetig weiterentwickelt. Die Quellen sowie Binärpakete für eine Reihe von Betriebssystemen können frei (unter einer wenig restriktiven Lizenz etwa im Vergleich zur GPL) heruntergeladen werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://modula3.org/">Modula-3-Ressourcen mit FAQ, Bibliographie und Links zu verschiedenen Implementierungen</a></li>
<li><a rel="nofollow" class="external text" href="http://binaervarianz.de/projekte/programmieren/modula/">Modula-3: Tutorial zum leichten Einstieg</a></li>
<li><a rel="nofollow" class="external text" href="http://www.1o0.de/wi-links/informatik/praxis/programmiersprachen/modula3/installation/windows/windows.html">Modula-3: Installation unter Windows</a></li>
<li><a rel="nofollow" class="external text" href="news:comp.lang.modula3">Newsgroup zu Modula-3</a></li>
<li><style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */


.mw-parser-output .webarchiv-memento a{color:inherit}


/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/19970814162826/http://www.ifi.uni-klu.ac.at/Modula-3/m3book/examples.html">Laszlo Boszormenyi &amp; Carsten Weich, <i>Programming in Modula-3: An Introduction in Programming in Style</i>: program examples</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> vom 14. August 1997 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>)</li></ul>
<div class="hintergrundfarbe1 rahmenfarbe1 navigation-not-searchable normdaten-typ-s" style="border-style: solid; border-width: 1px; clear: left; margin-bottom:1em; margin-top:1em; padding: 0.25em; overflow: hidden; word-break: break-word; word-wrap: break-word;" id="normdaten">
<div style="display: table-cell; vertical-align: middle; width: 100%;">
<div>
Normdaten&nbsp;(Sachbegriff): <a href="Gemeinsame_Normdatei" title="Gemeinsame Normdatei">GND</a>: <span class="-print"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4294172-6">4294172-6</a></span> </div>
</div></div></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2023-06-20" href="https://de.wikipedia.org/wiki/?title=Modula-3&amp;oldid=234774110">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>